package com.jmu.edu.IMApplication.utils;

import android.util.Log;
import android.widget.Toast;

import cn.jpush.im.android.api.ContactManager;
import cn.jpush.im.android.api.callback.GetUserInfoListCallback;
import cn.jpush.im.android.api.model.UserInfo;
import cn.jpush.im.api.BasicCallback;

public class FriendUtils {
    /**
     * RECEIVE --表示对方发送过来好友请求，需要我同意
     * AGREE --表示我和对方已经成为好友
     * DISAGREE --表示我或者对方拒绝了这次好友请求
     * WAIT --表示我正在等待对方的回应
     */
    public static final int RECEIVE = 1;
    public static final int AGREE = 2;
    public static final int DISAGREE = 3;
    public static final int WAIT = 4;


    /**
     * 获得好友列表
     *
     * @param getFriendListCallback 状态码 状态信息 好友列表
     */
    public static void getFriendList(GetUserInfoListCallback getFriendListCallback) {
        ContactManager.getFriendList(getFriendListCallback);
    }

    /**
     * 发送添加好友的请求
     *
     * @param username          添加用户名
     * @param reason            添加理由
     * @param addFriendCallBack 状态码 状态信息
     */
    public static void addFriend(String username, String reason, BasicCallback addFriendCallBack) {
        ContactManager.sendInvitationRequest(username, "", reason, addFriendCallBack);
    }

    /**
     * 接受好友请求
     *
     * @param targetUsername 邀请方用户名
     * @param callback       操作成功后对方接收到ContactNotifyEvent
     */
    public static void acceptInvitation(final String targetUsername, final BasicCallback callback) {
        ContactManager.acceptInvitation(targetUsername, "", callback);
    }

    /**
     * 拒绝好友请求
     *
     * @param targetUsername 邀请方用户名
     * @param reason         拒绝理由
     * @param callback       操作成功后对方收到ContactNotifyEvent
     */
    public static void declineInvitation(final String targetUsername, String reason, final BasicCallback callback) {
        ContactManager.declineInvitation(targetUsername, "", reason, callback);
    }

    /**
     * 删除好友
     *
     * @param friend            要删除的好友实例对象
     * @param delFriendCallBack 状态码 状态信息
     */
    public static void delFriend(UserInfo friend, BasicCallback delFriendCallBack) {
        friend.removeFromFriendList(delFriendCallBack);
    }

    /**
     * 更新好友备注名称
     *
     * @param friend
     * @param noteName
     * @param updateNoteNameCallBack 状态码 状态信息
     */
    public static void updateFriendNoteName(UserInfo friend, String noteName, BasicCallback updateNoteNameCallBack) {
        friend.updateNoteName(noteName, updateNoteNameCallBack);
    }

    /**
     * 更新好友备注信息
     *
     * @param friend
     * @param noteText
     * @param updateNoteNameCallBack 状态码 状态信息
     */
    public static void updateFriendNoteText(UserInfo friend, String noteText, BasicCallback updateNoteNameCallBack) {
        friend.updateNoteName(noteText, updateNoteNameCallBack);
    }
}
